5月 8 2015 Online Judge►LeetCode [LeetCode] 19 - Remove Nth Node From End of List 題意刪除一個Singly Linked List的倒數第n個節點。 解法使用兩個指針讓一個先走,接著同步走等到第一個指針到了最後就代表第二個指針是倒數第n個。 心得要注意頭節點的處理。 程式12345678910111213141516171819202122232425262728293031/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode *Node1 = head , *Node2 = head ; int i = 0 ; while ( Node1->next != NULL && i < n ){ Node1 = Node1->next ; i ++ ; } while ( Node1->next != NULL ){ Node1 = Node1->next ; Node2 = Node2->next ; } if ( i >= n ){ ListNode *Node = Node2->next->next ; Node2->next = Node ; } else if ( i == n - 1 ){ ListNode *Node = Node2->next ; head = Node ; } return head ; }}; Newer [LeetCode] 124 - Binary Tree Maximum Path Sum Older [C/C++] 常見排序實作